みなさんへの告知板


オンラインゲームからは離れました。これからはリアルょぅι゛ょで頑張ろうと思います


ミジンコゼミナール


ネットゲーム解析初心者向け講座、ミジンコゼミナール 開講!

多重起動、窓化の基礎をしらんやつは見ておけ。
読んでも理解できないやつは解析以前の問題だから文句いうな('A`)

ミジンコゼミナール:ネットゲーム解析講座一覧
1日目:入学/必要な教材 2日目:基本的なアセンブリ言語
3日目:Ollydbg の操作方法と演習 4日目:多重起動1(FindWindow)
5日目:多重起動2(CreateMutex) 6日目:多重起動3(EnumWindows、その他の方法)
7日目:ウィンドウについて
8日目:窓化(D8) 9日目:窓化(D9)
10日目:DLL について 11日目:何か作ってみよう
12日目:試験 13日目:プレゼント

2007年03月29日


ミクシからひっぱり。

少し前にmixiに載せといたソース。

プロセス名で処理を分けたい時に役立つとの意見を貰ったので
こっちにものっけておきます。

主にNativeAPIフック向け。

ULONG GetCurrentProcessName(PCHAR target_proc_name)
{
 ULONG offset;
 PEPROCESS CurrentProc = PsGetCurrentProcess();

 if( target_proc_name )
 {
  for(offset = 0; offset < PAGE_SIZE ; offset++)
  {
   // .exe 抜きで指定
   if (!strncmp( target_proc_name, (PCHAR)CurrentProc + offset, strlen(target_proc_name)) )
   {
    DbgPrint("ProcessName:%s  PID:%d", (PCHAR)CurrentProc + offset, PsGetCurrentProcessId());
    return offset;
   }
  }
 }

 return 0;
}


/*=========================================================
/ フックプロシージャの中で↓を使いプロセスを判定。
/=========================================================*/
ULONG ret;
PCHAR target_Process="XTrap";

if( 0 != ( ret = GetCurrentProcessName(target_Process)) )
{
  // 好きな処理をさせる。
  hogehoge();
  afun();
}


使い道:
GetCurrentProcessName()は適当なとこに定義。
APIフックなどをしてる処理の中で GetCurrentProcessName を呼び出す。
もし target_Process で指定したプロセスだったら下段if文にある処理を行う。


小言:
いやー、それにしても完美って最初っからクエありすぎ。
ちょっと意地になってクエ消化してたりするけど一日1、2時間しか
遊ぶ時間ないから全然すすまない(つwT)

目標のLv30まであと4つ。

でも30になる頃には燃え尽きてそうなヨカン…。


2007年03月21日


PW:初めてのペアハン

どのゲームでもソロしながらチャット派のおいらだが、誘われればもちろん
PTを組んだりする。

で、ジャンプしながらフラフラしてる時に声をかけられたのでペアハンをしてみた。



sp:じゃあ適当に叩いてくね

相:はい




ガシガシ・・・ガシガシ・・・・





ガシガシ・・・ガシガシ・・・・





ガシガシ・・・むむ・・・・

やけにピッタリくっつく人だなぁ・・・。
キャラ重なりまくりなんだぜ?





sp:暇だったら座ってていいよ?

相:はい




ガシガシ・・・ガシガシ・・・・





ガシガシ・・・ガシガシ・・・・





またピッタリくっついてくる…('A`;)
あれだ、虎だから上に乗りたいとか?




sp:上乗りたい?

相:いえ・・あの・・・

相:いつチートするか見たいんです;;

相:見逃したくないんです;;

sp:(^ω^;)



ちょっと用事があったので30分くらいでPT別れたんだけど色んな人いるよね(汗

少し前は「ミジンコ」と囁かれて逃げられました(つwT)ナンダアレ

2007年03月18日


PWまったり進行中

さすがにちょっと不便だったので…。

・elementclient.exe 直
 0043A93D . 75 29 JNZ SHORT elementc.0043A968 ⇒ JMPに変更

・多重
 0043B8AB |. 74 1E JE SHORT elementc.0043B8CB ⇒ JMP に変更

さっき気づいたんだけどいつの間にか PW のスレ立ってたんだね、

無敵とかはあると思ったけどやっぱりあるみたい('A`)

あぁ、そうそうついでにネタフラグでも・・・w

004037ED 40 INC EAX ⇒ xor eax, eax に変更



追記↓
よくよく考えてみたらタイトルが Element じゃなきゃいいだけだから
わざわざ蔵みなくても11日目のエセツールで適当なタイトル変えとけばいいだけじゃん…。

2007年03月13日


パーフェクトワールド

パーフェクトワールドやってみた。

3時間くらいでやっとLv6…。人多すぎです。

ラグが酷くて自分が先に叩いてるのか横殴りしてるのか意味不明。

風景とか水の中のグラフィックはきれいだね、あとはジャンプで

建物やら何やらの上までいけるのがイイくらいかな?

ちゃんと空飛べるようになったら気分いいかもね。

ちなみにキャラはパンダなんだがこのゲームってキャラによって

ジャンプ力違う?

まぁ所詮パンダだからな…。

人の多さもあわさってすでにマゾさが出てきてるがとりあえず

Lv20くらいまでやってみよう。

どっかで見かけたらよろしく('A`)ノ

そういえば中華をまだみてないなぁ。

2007年03月12日


久しぶりの LostOnline

昨日は久しぶりにLostOnlineをやったんだけどルミネ前は相変わらずユーザー多いね。

ロストの升スレ覗いてみたらメイドロボを作る話で少し盛り上がってたんだが

おいおい、キミたち・・・その話題は正解だ('A`)b

おいらの希望としてはスタイルはどうでもいいが極端なツンか

デレな友人しかいないので完全なツンデレ機能搭載のメイドロボを

作ってほしいな〜(←本物のツンデレ見たこと無い人

とか思ってはいたんだがメイドロボとメモリ検索話の流れとめてスマンカッタorz

誰かスレ進めてください(つwT)


さて、知り合いやら某氏も某会社辞めたらしくうるさくなくなったので…。

ざっとさわりだけ解説。

まずあのアドはX罠外しから多重対策までを含めたアドレスです。

とりあえず多重やら何やらはいいとしてX罠のほう。単純につぶせばX罠は

起動しないけどしばらくすると蔵が落ちます。

が、その呼び出しを上手く扱えば大丈夫。

まぁX外しについては昔から変わらずな対応方法だね。

本当はもっとおくのアドレスで説明した方が分かりやすいけど外すだけなら

あのアドを弄ってちょっと考えて見てください。

X自体を解析できてる人なら理由がわかると思うけど分からない人向けのヒントを。

ヒント:
プログラムはメモリ上に読み込まれ、実行されて初めて力を発揮する。
だがそれを止めてしまう == 力を発揮しない。本来の力を取り戻させるには?


う〜ん…。ヒント言いすぎだったかも('A`)
余計な事いうな!という人いたらコメにツッコミよろしく。
記事半分くらい消しとくので。

追記:
すぐ下に比較&ジャンプがあるの忘れてた。
まぁそれはそのままなので適当に…。

2007年03月11日


スペシャルフォースやってみた

友人に勧められてちょっとだけ始めたスペシャルフォースの戦歴。

初日、とりあえず操作だけできればいいやー、と思って一人二役30分くらいのプレイ。

感想⇒思ったよりも面白いかな〜。


日が変わって2回目のプレイ。
とりあえず初心者歓迎の部屋にいってみる。


結果⇒入って4秒くらいでいきなりキックされる(つwT)

夜遅かったのでその日は落ち。



またまた日が変わって3回目のプレイ。
前とは違う部屋だが初心者歓迎の部屋にいってみる。


結果⇒有無をいわさずキックされる('A`)



結論:おいおいまてまて、なんだこのいじめゲーは?
   おいらが一体何をしたってんだ?凸(^w^

2007年03月10日


ちょと重たすぎた…。

昨日うpしようと思ったんだけど、見境なしにシステム全部のミューテックスを

無効にするからゲーム起動するとPCの処理がかなり重くなる…。

ちょっと仕様変更しよう…。うpは延期(つwT)


== 日付変わって追記 ==

とりあえずメインの処理を半分くらいアセンブラで書き直してみた。

少しはましになったけどネトゲとか起動するとやっぱり重い…。

というわけでテスト版。

Mizinger_Z


・動作環境
 WinXp SP2

・使用者資格
何がおきても文句言わない村一番の勇者以外使用禁止('A`)

・仕様
単純にミューテックス名を使わないようにさせる。
付属の DbView で本来のミューテックス名出すようにしてあるけど
アスキー文字変換はさせてないので16進表示。
どーしても知りたい人は表と照らし合わせて文字変換してください。

asciiコード


とりあえず指定したプロセスだけ対応するようにしたほうがいいねぇ。

2007年03月08日


ただのめも2

ちゃんと見てみたら一つ前のスタックフレームに LpName の
サイズが積まれてるジャマイカ…('A`)

1つ目
0006FEE4 |7FFDEC00 UNICODE "Local\Microsoft_WMP_70_CheckForOtherInstanceMutex"
0006FEE8 |00000001
0006FEEC |00320031 ⇒ これ

>>下位2Byte、つまり 0x31 = LpName のサイズ。


いやいやその後に MAX_PATH って自分でいってるじゃん!
てかあれだ、もっとよくみたらちゃんと現在地点のスタックフレーム見るだけで
いいんじゃん。しょーがないからまとめて記事修正なんだぜ?凸(^w^


以下修正版:


とりあえず LpName が格納されている領域を確認。

7FFDEC00 4D 00 2D 00 43 00 72 00 65 00 61 00 74 00 65 00 M.-.C.r.e.a.t.e.
7FFDEC10 4D 00 75 00 74 00 65 00 78 00 00 00 77 00 53 00 M.u.t.e.x...w.S.

LpName は "M-CreateMutex" の 13Byte、つまり 0xD だ。

ただしそれぞれの間に 0x00 が入っているから D x 2 = 0x1A が総サイズとなる。

次にスタックを見てみる。

呼び出しがあった時のスタックフレームは ESP から EBP までの 64k。
結論からいうと、EBP - 0xC のスタックに LpName のサイズが入っている。

0012FF84 001C001A ⇒ EBP - 0xC
0012FF88 7FFDEC00 UNICODE "M-CreateMutex"
0012FF8C 7FFDF000
0012FF90 /0012FFB0 ⇒ EBP

ここでいうと 0012FF84 だが見てのとおり LpName のサイズ 1A が入っている。
上位ビットは 1C となってるけどこれはどう考えても文字の終端を表すために
+ NULL してるとしか思えない。
とりあえずこれでばっちり総サイズのチェックができる('A`)b

ちなみに LpName の最大値はやっぱり MAX_PATH みたい。


・260文字はおk

0012FFAC |00402000 ASCII "111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111
111111111111"

・261文字だとNG

0012EC30 |0012EC68 ASCII "CTF.LBES.MutexDefaultS-1-5-21-
42933632-2124368392-1501187911-624974"

あ〜、これで本当に解決だ…。

2007年03月06日


ただのめも。

動作確認用のメモ。

0x00が終了のサイン。

それ以下のところはゴミだね。

0xFFFFFFFF のところはどうするかなぁ〜。

00001899 21:35:04 PID : 2300
00001900 21:35:04 : 0x002D007E ~-
00001901 21:35:04 : 0x0041007E ~A
00001902 21:35:04 : 0x006D0064 dm
00001903 21:35:04 : 0x006E0069 in
00001904 21:35:04 : 0x00320031 12
00001905 21:35:04 : 0x00240033 3$
00001906 21:35:04 : 0x006C0000 l
00001907 21:35:04 : 0x00730065 es
00001908 21:35:04 : 0x0047005C \G
00001909 21:35:04 : 0x00610072 ra
00001910 21:35:04 : 0x0061006E na
00001911 21:35:04 : 0x006F0064 do
00001912 21:35:04 : 0x00450020 E
00001913 21:35:04 : 0x00700073 sp
00001914 21:35:04 : 0x00640061 ad
00001915 21:35:04 : 0x005C0061 a\
00001916 21:35:04 : 0x00650072 re
00001917 21:35:04 : 0x0065006C le
00001918 21:35:04 : 0x00730061 as
00001919 21:35:04 : 0x005C0065 e\
00001920 21:35:04 : 0x00540058 XT
00001921 21:35:04 : 0x00610072 ra
00001922 21:35:04 : 0x005C0070 p\
00001923 21:35:04 : 0x00730061 as
00001924 21:35:04 : 0x00720070 pr
00001925 21:35:04 : 0x006B005F _k
00001926 21:35:04 : 0x00790065 ey
00001927 21:35:04 : 0x002E0073 s.
00001928 21:35:04 : 0x006E0069 in
00001929 21:35:04 : 0x00000069 i
00001930 21:35:04 : 0x00030000
00001931 21:35:04 : 0x00960F70
00001932 21:35:04 : 0x003D1E90
00001933 21:35:04 : 0x00A66DE0
00001934 21:35:04 : 0x001445F8
00001935 21:35:04 : 0xFFFFFFFF
00001936 21:35:04 : 0x00400000
00001937 21:35:04 : 0x00241E90

2007年03月04日


隠れん坊

たまには守る側の気持ちで…

MizingerZ


えぇ、ただのネタプログラムですがなにか?



遊び方(?):

1.起動

2.解析しようとデバッガやタスクマネージャーで Mizinger を探す。



アタッチできない人は頑張ってアタッチできるプログラムを作る(ぇ

2007年03月01日


これってある?ない?

世の中には色々なツールがあります。

圧縮/展開/解凍のツールとかリモートコントロールのツールとかメディアに焼く

ツールなどなど。

解析関係でいったらデバッガはもちろん、メモリ・リソースエディッタ、抽出ツール

とか色々です。

で、素朴な疑問なんですがミューッテクスとかファイルマッピングに対応してる

多重起動のツールってあるんでしょうか?

ツール名までは教えてもらえなくてもいいんですが、一般的にあるのか?無いのか?が

むしょ〜〜に気になってる sp です。

知ってる人いましたら「ある・なし」のレベルで教えてもらえると助かります('A`)
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。